package com.nfcuttings.presuvinil.database;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import com.nfcuttings.presuvinil.Propiedades;
import com.nfcuttings.presuvinil.Utils;

public class PropiedadesDataSource extends Activity{

	private static PropiedadesDataSource dataSource;
	private SQLiteDatabase database;
	private PropiedadesSQLiteHelper	 dbHelper;
	private String[] allColumns = { PropiedadesSQLiteHelper.COLUMN_ID, PropiedadesSQLiteHelper.COLUMN_NOMBRE,
			PropiedadesSQLiteHelper.COLUMN_VALOR};

	public static PropiedadesDataSource getDataSource(Context context) {
		if(dataSource == null){
			dataSource = new PropiedadesDataSource();
			dataSource.dbHelper = new PropiedadesSQLiteHelper(context);
			return dataSource;
		}
		return dataSource;
	}


	public void open() throws SQLException {
		database = dbHelper.getWritableDatabase();
	}

	public void close() {
		dbHelper.close();
	}

	//	public static double getValorHora(){
	//	return 75;//TODO sacar de la base de datos
	//}

	public double getValorHora(){
		Cursor cursor = database.query(PropiedadesSQLiteHelper.TABLE_PROPIEDADES,
				allColumns, PropiedadesSQLiteHelper.COLUMN_NOMBRE + " = " + Propiedades.VALOR_HORA, null,
				null, null, null);
		cursor.moveToFirst();
		Propiedades newPropiedades = cursorToPropiedades(cursor);
		cursor.close();
		return (Double)newPropiedades.getValor();
	}

	public List<Propiedades> getAllPropiedadess() {
		List<Propiedades> Propiedadess = new ArrayList<Propiedades>();

		Cursor cursor = database.query(PropiedadesSQLiteHelper.TABLE_PROPIEDADES,
				allColumns, null, null, null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {
			Propiedades Propiedades = cursorToPropiedades(cursor);
			Propiedadess.add(Propiedades);
			cursor.moveToNext();
		}
		// Make sure to close the cursor
		cursor.close();
		return Propiedadess;
	}

	private Propiedades cursorToPropiedades(Cursor cursor) {
		Propiedades Propiedades = new Propiedades();
		Propiedades.setNombre(cursor.getString(0));
		Propiedades.setValor(Utils.obtenerObjetoDesdeBytes(cursor.getBlob(1)));
		return Propiedades;
	}

}
